#ifndef DATA_PROCESSING_H
#define DATA_PROCESSING_H

#include <QObject>

QT_BEGIN_NAMESPACE
class Information;
QT_END_NAMESPACE

/*****************************************************************************************
  @copyright 2013-2020
  @author    qiaowei
  @contact   weiweiqiao@126.com
  @version   1.0
  @date      2020-08-03
  @brief     根据传入的文件名读取文件信息，并将数据按要求进行处理
******************************************************************************************/
class Data_processing : public QObject
{
    Q_OBJECT
public:
    explicit Data_processing(QObject* parent = nullptr);
    virtual ~Data_processing();

public slots:
    /**
      @brief    读取台站频率信息
      @author   qiaowei
      @version  1.0
      @date     2020-07-24
      @param    file_name_and_path 读取的文件名及路径
    */
    void read_file(const QString& file_name_and_path);

    /**
      @author   qiaowei
      @version  1.0
      @date     2020-08-02
      @brief    根据传入的频率和台站信息计算是否还有互调，如果有更新对应频率的是否互调、互调频率数据，发
                射互调计算后的台站信息
      @param    frequency 传入的频率
      @param    list 台站信息
    */
    void calculate_frequency(double frequency, QList<Information *> *list);

signals:
    /**
      @author   qiaowei
      @version  1.0
      @date     2020-08-02
      @brief    发射从文件读取的台站信息
    */
    void signal_frequency_informations(QList<Information*>* list);

    /**
      @author   qiaowei
      @version  1.0
      @date     2020-08-02
      @brief    发射台站信息文件的名称（不包括文件存放路径和文件扩展名）
    */
    void signal_station_name(const QString& station_name);

    /**
      @author   qiaowei
      @version  1.0
      @date     2020-08-02
      @brief    发射互调计算后的台站信息
    */
    void signal_is_inter_modulation(QList<Information*>* list);

private:
    /**
      @brief    根据文件名读取文件数据，并将数据保存到QList中并返回
      @author   qiaowei
      @version  1.0
      @date     2020-07-24
      @param    file_name_and_path 读取的文件名及路径
      @return   保存文件数据的QList，数据项为Information*类型
    */
    QList<Information*>* read_data_from_txt_file(const QString& file_name_and_path);

    /**
      @brief    根据文件名获取台站名称并返回
      @author   qiaowei
      @version  1.0
      @date     2020-07-24
      @param
    */
    QString get_station_name(QString file_name_and_path);

private:
    /**
      @brief    将字符串根据要求拆分成，保存到Information*类型数据
      @author   qiaowei
      @version  1.0
      @date     2020-07-24
      @param    content 要拆分的字符串
    */
    Information *split_data(QString content);
};

#endif // DATA_PROCESSING_H
